package logica;

import static org.junit.Assert.*;

import java.util.Date;

import org.junit.*;

public class realizarDevolucaoTest {

	Locacao lc1;
	Filme fl1, fl2, fl3;
	@Before
	public void prepararTest(){
		Date dataLocacao, dataDevolucaoEsperada;
		dataLocacao = new Date(2011, 9, 1);
		dataDevolucaoEsperada = new Date(2011, 9, 4);
		lc1 = new Locacao(dataLocacao, dataDevolucaoEsperada);
		fl1 = new Filme(0, "Titanic", "Navio Afunda", lc1);
		fl2 = new Filme(1, "Conan", "Bruto", lc1);
		fl3 = new Filme(2, "Diario da Princesa", "Um saco", lc1);
	
		lc1.addFilme(fl1);
		lc1.addFilme(fl2);
		lc1.addFilme(fl3);
	}
	
	@Test
	public void testarCalcularDividaEmAtraso1Dia() {
		fl1.getLocacao().setDevolucaoReal(new Date(2011, 9, 5));
		assertEquals(10, fl1.calcularDivida());
	}
	
	@Test
	public void testarCalcularDividaEmAtraso2Dia() {
		fl1.getLocacao().setDevolucaoReal(new Date(2011, 9, 6));
		assertEquals(20, fl1.calcularDivida());
	}
	
	@Test
	public void testarCalcularDividaSemAtraso() {
		fl1.getLocacao().setDevolucaoReal(new Date(2011, 9, 2));
		assertEquals(0, fl1.calcularDivida());
	}

	@Test
	public void testarCalcularDivida(){
		lc1.setDevolucaoReal(new Date(2011, 9, 6));
		lc1.getCliente().setDivida(fl1.calcularDivida());
		assertEquals(20,lc1.getCliente().getDivida());
	}
	
	@Test
	public void testarSetDanificado(){
		boolean danificado = true;
		fl1.setDanificado(danificado);
		assertEquals(true,fl1.getDanificado());
	}
	
	@Test
	public void testarNotificarGerente(){
		boolean danificado = true; 

		if(danificado)
		{
			fl1.setDanificado(danificado);
			lc1.notificarGerente(fl1);
		}
		
		assertEquals(true,lc1.getGerente().getNotificados().contains(fl1));
	}

	@Test
	public void testarInstanciaFilmeDestruida(){
		fl1 = null;
		assertNull(fl1);
	}
	
}
